Composition of a user interface through data binding

ABSTRACT

The technology relates to integrating applications into a single user interface. One or more computing devices may display a user interface including associated data corresponding to a first application and generate a request for supplemental data. A second application which can satisfy the request for supplemental data may be identified by the one or more computing devices, and the one or more computing devices may generate and display a notification indicating that the second application can provide the requested supplemental data. A selection of the notification may be received by the one or more computing devices and a second user interface corresponding to the second application may be integrated into the user interface, wherein the second user interface displays the requested supplemental data.

BACKGROUND

Computing devices, such as mobile devices, often lack the screenreal-estate to display a sufficient amount of information to a user.Additionally, each application is typically capable of providing only asmall a portion of the information which may be needed by the user. Assuch, the user may need to switch between multiple applications, orsearch for the needed information manually. As such, gathering andviewing all of the needed information may become cumbersome and timeconsuming.

SUMMARY

Embodiments within the disclosure relate generally to manufacturingstructured forms. One aspect includes a method for integratingapplications into a single user interface. One or more computing devicesmay display a user interface including associated data, corresponding toa first application. The one or more computing devices may generate arequest for supplemental data and identify a second application whichcan satisfy the request for supplemental data. A notification indicatingthat the second application can provide the requested supplemental datamay be generated and displayed by the one or more computing devices. Theone or more computing devices may receive a selection of thenotification and integrate a second user interface corresponding to thesecond application into the user interface, wherein the second userinterface displays the requested supplemental data.

In some embodiments the one or more computing devices, a second requestfor supplemental data, identify a third application which can satisfythe second request for supplemental data, generate and display a secondnotification indicating that the third application can provide thesecond requested supplemental data and upon receiving a selection of thesecond notification, integrate a third user interface corresponding tothe third application into the user interface, wherein the third userinterface displays the second requested supplemental data.

In some embodiments the request for supplemental data is based upon theassociated data displayed on the one or more computing devices.

In some embodiments the second request for supplemental data is basedupon the requested supplemental data displayed in the second userinterface.

In some embodiments the request for supplemental data includes a requestfor a specific type of data not available through the first application.

In some embodiments the second user interface may be updated when theassociated data displayed on the user interface changes.

In some embodiments the second user interface may be removed when theassociated data displayed on the user interface changes.

Another aspect includes a system for dispatching entered data. Thesystem may comprise one or more computing devices having one or moreprocessors and memory storing instructions. The instructions may beexecutable by the one or more processors and may comprise displaying auser interface including associated data, corresponding to a firstapplication, generating a request for supplemental data, identifying asecond application which can satisfy the request for supplemental data,generating and displaying a notification indicating that the secondapplication can provide the requested supplemental data, receiving aselection of the notification, and integrating a second user interfacecorresponding to the second application into the user interface, whereinthe second user interface displays the requested supplemental data.

Another aspect includes non-transitory computer-readable medium storinginstructions. The instructions, which when executed by one or moreprocessors, cause the one or more processors to display a user interfaceincluding associated data, corresponding to a first application,generate a request for supplemental data, identify a second applicationwhich can satisfy the request for supplemental data, generate anddisplay a notification indicating that the second application canprovide the requested supplemental data, receive a selection of thenotification, integrate a second user interface corresponding to thesecond application into the user interface, wherein the second userinterface displays the requested supplemental data.

BRIEF DESCRIPTION OF THE DRAWINGS

The present technology is illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings in which likereference numerals refer to similar elements including:

FIG. 1 is a functional diagram of an example system in accordance withaspects of the disclosure.

FIG. 2 is a pictorial diagram of the example system of FIG. 1.

FIG. 3 is an example application interface in accordance with aspects ofthe disclosure.

FIG. 4 is another example application interface in accordance withaspects of the disclosure.

FIG. 5 is a portion of an example application in accordance with aspectsof the disclosure.

FIG. 6 shows notifications overlaid on a portion of an exampleapplication interface in accordance with aspects of the disclosure.

FIG. 7 shows another application integrated into an example applicationin accordance with aspects of the disclosure.

FIG. 8 shows another notification overlaid on a portion of an exampleapplication interface in accordance with aspects of the disclosure.

FIG. 9 shows multiple applications integrated into an exampleapplication in accordance with an embodiment.

FIG. 10 shows changing supplemental data of multiple applicationsintegrated into an example application in accordance with an embodiment.

FIG. 11 is a flow diagram in accordance with an embodiment.

DETAILED DESCRIPTION Overview

The technology relates to augmenting the display of an application on acomputing device with data and user interfaces of other applications. Inthis regard, an application running on a device may anchor the userinterfaces of other applications in its own user interface. Forinstance, a user may open an application and the display may bepopulated with the user interface of that application. While theapplication is displayed, a program operating on the computing devicemay determine that other applications are able to provide userinterfaces and additional information which is not available from theapplication which is currently running on the device. The program maypresent an option for the user to allow the application to incorporatethe user interfaces and additional information into the user interfaceof the application. Upon the user selecting the option to incorporatethe other applications, the user may be provided with additionalinformation and functions provided by the other applications and theirrespective user interfaces, while staying within the application.

In one embodiment, a computing device may load an application. Theapplication may include display elements, such as a user interface, andassociated data which is overlaid on the user interface. For example,the application may be a mobile application, such as a restaurantrecommendation application. The restaurant recommendation applicationmay include a user interface for displaying associated data, such as alist of popular restaurants.

The application may indicate that supplemental data may be added to thedisplay and/or provided by the application. In this regard, based on theassociated data that is being displayed in the user interface, theapplication may generate one or more declarations indicating thatsupplemental data may be accommodated and/or provided by theapplication. Such supplemental data may include calendar data, locationdata, address book data, contact data, mapping data, or any other data.Other applications may also generate declarations indicating thespecific type of supplemental data which can be accommodated andprovided.

Declarations may include data identifiers. The data identifiers mayinclude input identifiers and/or output identifiers which indicate thespecific type of supplemental data which can be accommodated and/orprovided, respectively, by the application. The data identifiers may benamed such that they include a description of the type of supplementaldata each of the data identifiers are associated with, assuringcompatibility between the application and other applications. Forexample, the names of the data identifiers may be based on descriptiveterms such that, when any application generates declarations to provideand/or accommodate a specific type of supplemental data, the dataidentifier associated with these declarations would assure compatibilitybetween the data being provided and/or accommodated.

Declarations may further include display identifiers. Displayidentifiers may indicate the types of user interfaces which can beaccommodated and/or provided by the application. In this regard, thedisplay identifiers may include display identifiers and composeidentifiers which indicate the specific type of user interfaces whichcan be provided and accommodated, respectively.

A data management application may monitor the applications on thecomputing device to determine whether any of the one or moredeclarations may be satisfied. In this regard, the data managementapplication may be integrated into an operating system executing on thecomputing device and may continually monitor the applications todetermine whether any declarations have been generated.

Upon determining that one or more declarations have been generated, thedata management application may extract the data and display identifiersassociated with each declaration. Based on the extracted data anddisplay identifiers, the data management application may query each ofthe other applications on the computing device to determine whether anyof the other applications can satisfy the declarations with supplementaldata of the specific type identified by the extracted identifiers.

Upon determining that at least one of the declarations is satisfied, oneor more respective notifications indicating that matching supplementaldata is available may be provided. In addition, the notifications may bepresented in a space saving arrangement by compressing and placing thembehind a first notification. Such an arrangement may allow fornotifications to be presented without overtaking the display of theapplication.

Upon receiving a selection of one of the notifications, the datamanagement application may integrate the user interface and supplementaldata of the other application associated with the selected notificationinto the user interface of the application. For example, when the userselects the first notification, the reservation application may receivea request to provide the user interface and supplemental data associatedwith the reservation application declaration.

The data management may integrate the selected other application intothe user interface by arranging the supplemental data and user interfaceprovided by the other application into the application. The applicationmay then integrate the user interface provided by the other applicationalong with the corresponding supplemental data within its own userinterface.

Additional declarations may be generated by other applications which areintegrated into the user interface of the application. In this regard,the other applications may generate declarations for additionalsupplemental data based on the associated data and supplemental datadisplayed in the user interface.

The data management application may monitor the application and theother applications to determine whether any of the declarations foradditional supplemental data may be satisfied, as previously described.In this regard, the data management application may query each of theother applications to determine whether they can provide additionalsupplemental data of the specific type of data specified in the one ormore requests for additional supplemental data. The data managementmodule may integrate the selected other application into the userinterface by arranging the additional supplemental data andcorresponding display elements in the location provided by theapplication.

The other applications integrated into the user interface may updatetheir corresponding display elements and supplemental associated databased on the data being displayed in the user interface.

The features described herein may allow for user interfaces of multipleapplications to be shown together, to provide a coherent and rich userexperience. By displaying multiple user interfaces together in a singledisplay, users are able to utilize multiple applications, and theircorresponding data, at a single time without having to navigate betweendifferent screens. In addition the features described above may allowfor the computing device to anticipate a user's needs, thereby providinginformation to the user before it is requested. Moreover, the multipleapplications do not need to be programmed so that they are aware of eachother. Rather the system may organize the cooperation of the multipleapplications according to their respective user interfaces and data,thereby allowing for greater integration between applications.

Example Systems

FIGS. 1 and 2 include an example system 100 in which the featuresdescribed above may be implemented. It should not be considered aslimiting the scope of the disclosure or usefulness of the featuresdescribed herein. In this example, system 100 can include computingdevices 110, 120, and 130 as well as storage system 150. Each computingdevice can contain one or more processors 112, memory 114 and othercomponents typically present in general purpose computing devices.Memory 114 of each of computing devices 110, 120, and 130 can storeinformation accessible by the one or more processors 112, includinginstructions 116 that can be executed by the one or more processors 112.

Memory can also include data 118 that can be retrieved, manipulated orstored by the processor. The memory can be of any non-transitory typecapable of storing information accessible by the processor, such as ahard-drive, memory card, ROM, RAM, DVD, CD-ROM, write-capable, andread-only memories.

The instructions 116 can be any set of instructions to be executeddirectly, such as machine code, or indirectly, such as scripts, by theone or more processors. In that regard, the terms “instructions,”“application,” “steps,” and “programs” can be used interchangeablyherein. The instructions can be stored in object code format for directprocessing by a processor, or in any other computing device languageincluding scripts or collections of independent source code modules thatare interpreted on demand or compiled in advance. Functions, methods,and routines of the instructions are explained in more detail below.

Data 118 may be retrieved, stored, and modified by the one or moreprocessors 112 in accordance with the instructions 116. For instance,although the subject matter described herein is not limited by anyparticular data structure, the data can be stored in computer registers,in a relational database as a table having many different fields andrecords, or XML documents. The data can also be formatted in anycomputing device-readable format such as, but not limited to, binaryvalues, ASCII or Unicode. Moreover, the data can comprise anyinformation sufficient to identify the relevant information, such asnumbers, descriptive text, proprietary codes, pointers, references todata stored in other memories such as at other network locations, orinformation that is used by a function to calculate the relevant data.

The one or more processors 112 can be any conventional processors, suchas a commercially available CPU. Alternatively, the processors can bededicated components such as an application specific integrated circuit(“ASIC”) or other hardware-based processor. Although not necessary, oneor more of computing devices 110, 120, and 130 may include specializedhardware components to perform specific computing processes, such asdecoding video, matching video frames with images, distorting videos,encoding distorted videos, etc. faster or more efficiently.

Although FIG. 1 functionally illustrates the processor, memory, andother elements of the computing devices as being within the same block,the processor, computer, computing device, or memory can actuallycomprise multiple processors, computers, computing devices, or memoriesthat may or may not be stored within the same physical housing. Forexample, the memory 144 can be a hard drive or other storage medialocated in housings different from that of the computing device 110.

References to a processor, computer, computing device, or memory will beunderstood to include references to a collection of processors,computers, computing devices, or memories that may or may not operate inparallel. For example, the computing device 110 may include servercomputing devices operating as a load-balanced server farm, distributedsystem, etc. Yet further, although some functions described below areindicated as taking place on a single computing device having a singleprocessor, various aspects of the subject matter described herein can beimplemented by a plurality of computing devices, for example,communicating information over network 160.

Each of the computing devices can be at different nodes of a network 160and capable of directly and indirectly communicating with other nodes ofnetwork 160. Although only a few computing devices 110, 120, and 130 aredepicted in FIGS. 1-2, it should be appreciated that a typical systemcan include a large number of connected computing devices, with eachdifferent computing device being at a different node of the network 160.The network 160 and intervening nodes described herein can beinterconnected using various protocols and systems, such that thenetwork can be part of the Internet, World Wide Web, specific intranets,wide area networks, or local networks. The network can utilize standardcommunications protocols, such as Ethernet, WiFi and HTTP, protocolsthat are proprietary to one or more companies, and various combinationsof the foregoing. Although certain advantages are obtained wheninformation is transmitted or received as noted above, other aspects ofthe subject matter described herein are not limited to any particularmanner of transmission of information.

As an example, each of the computing devices 110 may include web serverscapable of communicating with storage system 150 as well as computingdevices 120 and 130 via the network. For example, one or more of servercomputing devices 110 may use network 160 to transmit and presentinformation to a user, such as user 220 or 230, on a display, such asdisplays 122 or 132 of computing devices 120 or 130. In this regard,computing devices 120 and 130 may be considered client computingdevices, and may perform all or some of the features described herein.

Each of the client computing devices 120 and 130 may be configuredsimilarly to the server computing devices 110, with one or moreprocessors, memory and instructions as described above. Each clientcomputing device 120 or 130 may be a personal computing device intendedfor use by a user 220 or 230, and have all of the components normallyused in connection with a personal computing device such as a centralprocessing unit (CPU), memory (e.g., RAM and internal hard drives)storing data and instructions, a display such as displays 122 or 132(e.g., a monitor having a screen, a touch-screen, a projector, atelevision, or other device that is operable to display information),and user input device 124 (e.g., a mouse, keyboard, touch-screen, ormicrophone). The client computing device may also include a camera forrecording video streams and/or capturing images, speakers, a networkinterface device, and all of the components used for connecting theseelements to one another.

Although the client computing devices 120 and 130 may each comprise afull-sized personal computing device, they may alternatively comprisemobile computing devices capable of wirelessly exchanging data with aserver, such as server computing device 110, over a network such as theInternet. By way of example only, client computing device 120 may be amobile phone or a device such as a wireless-enabled PDA, a tablet PC, ora netbook that is capable of obtaining information via the Internet. Inanother example, client computing device 130 may be a tablet or laptopcomputer. As an example the user may input information using a smallkeyboard, a keypad, microphone, using visual signals with a camera, or atouch screen.

As with memory 114, storage system 150 can be of any type ofcomputerized storage capable of storing information accessible by theserver computing devices 110, such as a hard-drive, memory card, ROM,RAM, DVD, CD-ROM, write-capable, and read-only memories. In addition,storage system 150 may include a distributed storage system where datais stored on a plurality of different storage devices which may bephysically located at the same or different geographic locations.Storage system 150 may be connected to the computing devices via thenetwork 160 as shown in FIG. 1 and/or may be directly connected to anyof the computing devices 110, 120, and 130 (not shown).

Memory 114 and storage system 150 may include one or more databases. Inone example, the memory 114 may include a database comprised of aplurality of databases which store public and private data includingsources of supplemental data. Such supplemental data may includecalendar data, location data, address book data, contact data, mappingdata, or any other such data. The supplemental data may be stored in aweb browsing history database, a search history database, a maps historydatabase, an address book database, an e-mail archive database, acalendar entries database, etc. For example, the address book databasemay include personal data corresponding to a user's contacts, such ascontact's names, phone numbers, addresses, etc. In some embodiments thedatabases may be comprised of a number of different databases containingprivate and/or public data.

The information stored in each of these databases may be associated withspecific programs or types of applications, or with overall operation ofthe computing devices 120 and 130. For instance, the web browsinghistory and search history databases may be associated with one or moreweb browsers such as Edge, Safari, Firefox or Chrome web browsers. Themaps history database may also be associated with the web browsers orother applications such as Google Earth. The address book and e-mailarchive databases may be linked to messaging applications, such as Gmailor Microsoft Outlook. The calendar entries database may similarly belinked to the messaging application or other application such as GoogleCalendar. While a number of different databases have been identifiedabove, other databases which may contain location-related informationmay also be employed, such as the database associated with GoogleLatitude, a tool which lets users share their current location withfriends.

Example Methods

In order to augment the display of an application with data and userinterfaces of other applications a computing device, such as computingdevice 120 or 130, may load an application. The application may includedisplay elements, such as a user interface, and associated data which isoverlaid on the user interface, on the display of the computing device,such as displays 122 or 132. In one example, the application may be amobile application, such as a restaurant recommendation application, asshown in FIG. 3. The restaurant recommendation application may include auser interface 300 for displaying associated data, such as a list ofpopular restaurants 320, a title 330, and a subtitle 340.

A user may interact with the application, such as by scrolling throughand selecting associated data from the user interface. For example, asshown in FIG. 4, a user, such as user 220, may swipe the restaurantrecommendation application's user interface 300 in a bottom to topmotion, as indicated by arrow 410. As such, the title 330 may move offof the display of the computing device, while the subtitle 340 movesupwards. Additional restaurants, in the list of popular restaurants 320,may move onto the screen.

Based on the associated data that is being displayed in the userinterface, the application may generate one or more declarationsindicating that supplemental data may be accommodated and/or provided bythe application. In this regard, the application may generatedeclarations based on pre-programmed parameters, upon startup of theapplication, or when the user navigates to a particular portion of theapplication. Supplemental data may include data which is correlative tothe associated data of the application or data which the applicationindicates is needed. Such supplemental data may include calendar data,location data, address book data, contact data, mapping data, or anyother data.

Declarations may include data identifiers. The data identifiers mayinclude input identifiers and/or output identifiers which indicate thespecific type of supplemental data which can be accommodated and/orprovided, respectively, by the application. The data identifiers may benamed such that they are globally unique in accordance with publicallyavailable standards or guidelines. In one example, the application mayquery a list of identifier names which are publically available on awebsite or database to determine an appropriate name for a dataidentifier. In some embodiments the names of the data identifiers usedby the application may be predetermined based on the associated andsupplemental data the application is programmed to manage. In otherwords, the application may have the names of the data identifiers storedwithin its code.

The data identifiers may be named such that they include a descriptionof the type of supplemental data each of the data identifier names areassociated with, assuring compatibility between the application andother applications. For example, the names of the data identifiers maybe based on descriptive terms such that, when any application generatesdeclarations to provide and/or accommodate a specific type ofsupplemental data, the data identifier associated with thesedeclarations would assure compatibility between the data being providedand/or accommodated. In some embodiments multiple data identifiers mayrefer to the same type of supplemental data.

Declarations may further include display identifiers. Displayidentifiers may indicate the types of user interfaces which can beaccommodated and/or provided by the application. In this regard, thedisplay identifiers may include display identifiers and composeidentifiers which indicate the specific type of user interfaces whichcan be provided and accommodated, respectively.

As with the data identifiers, display identifiers may be globally uniqueand named in accordance with publically available standards orguidelines. In one example, the application may query a list ofidentifier names which are publically available on a website or databaseto determine an appropriate name for the display identifier. In someembodiments the names of the display identifiers used by the applicationmay be predetermined, and programmed into the applications code.Additionally, multiple display identifiers may refer to the same type ofuser interface.

The types of user interfaces which may be accommodated and/or providedby the application may be of any shape and size and may further includeall types of design elements. In this regard, the types of userinterfaces may be of any type, including partial or full-screen userinterfaces, as well as user interfaces of a specific size, relative to adisplay, such as a card. For example, the card user interface may bedefined as being rectangular in shape and comprising 25% of the viewabledisplay. Each type of user interface may include user interfaceelements, such as a user interface layout, interface elements, such asbuttons and text, positions of interface elements such, and other suchinformation commonly found in user interfaces.

In one example, upon the user selecting “Circle Pizza,” from the list ofpopular restaurants 320, the restaurant recommendation application maynavigate to, and display, the “Circle Pizza” portion 500 of theapplication. As such, the associated data located within the “CirclePizza” portion of the application, such as the “Location” 520 and “Hoursof Operation” 530, may be displayed by the application on the userinterface 300, as shown in FIG. 5.

Upon displaying the associated data of “Location” 520 and “Hours ofOperation” 530, two declarations for supplemental data may be generatedby the restaurant recommendation application. The two declarations forsupplemental data may include a first declaration that includes a firstinput identifier corresponding to restaurant hours of operation and asecond declaration that includes a second input identifier correspondingto the location. Table A shows the contents of the first and seconddeclarations:

TABLE A First Declaration: a. Input Identifier: Reservation b. OutputIdentifier: Restaurant c. Compose: Card Second Declaration: a. InputIdentifier: Location b. Output Identifier: Address c. Compose: Card andFull-Screen

Other applications may also generate declarations indicating thespecific type of supplemental data which can be accommodated andprovided, as described herein. For example, as shown in Table B, twoother applications, a reservation application and a directionsapplication operating, or present, on the computing device may generatethe following declarations.

TABLE B Reservation Application Declaration: a. Input Identifier:Restaurant b. Output Identifier: Reservation c. Display: Card DirectionsApplication Declaration: a. Input Identifier: Address b. OutputIdentifier: Location c. Display: Full-Screen

A data management application may monitor the applications on thecomputing device to determine whether any of the one or moredeclarations may be satisfied. In this regard, the data managementapplication may be integrated into an operating system executing on thecomputing device and may continually monitor the applications todetermine whether any declarations have been generated. For example, thedata management application may monitor the restaurant recommendationapplication and determine that the first and second declarations weregenerated.

Upon determining that one or more declarations have been generated, thedata management application may extract the data and display identifiersassociated with each declaration. For example, the data managementapplication may extract the “Reservation” and “Location” inputidentifiers from the first and second declarations, respectively, aswell as the “Restaurant” and “Address” output identifiers. Additionally,the data management application may extract the corresponding “card” and“card and full-screen” display identifiers.

Based on the extracted data and display identifiers, the data managementapplication may query each of the other applications on the computingdevice to determine whether they can satisfy the declarations withsupplemental data of the specific type identified by the extractedidentifiers. In some embodiments, the data management application maymonitor external applications or sources of information, such asweb-based applications or websites to determine whether these sourceshave generated any declarations. Such external applications or sourcesof information may be on a server, such as server 110.

Declarations are satisfied when the data and display identifiers ofdeclarations from the application are matched with the data and displayidentifiers of at least one of the other applications. In this regard,the input, output, and display identifiers of one declaration shouldmatch the output, input, and display identifiers of a seconddeclaration. In some embodiments, declarations may only include an inputor output identifiers along with a display identifier. As such, the datamanagement application may only determine whether the providedidentifiers may be matched. In some embodiments, declarations may besatisfied when the output and display identifiers are matched with theinput and display identifiers of a second declaration.

For example, the first declaration may be compared to the reservationapplication declaration and directions application declaration by thedata management application. In this regard, the data managementapplication may compare each of the extracted input, output, and displayidentifiers of the first declaration, as shown in Table A, to theextracted output, input, and display identifiers of the reservation anddirections applications declarations, as shown in Table B. As theextracted input, output, and compose identifiers of the firstdeclaration match the extracted output, input, and display identifiersof the reservation application declaration, the first declaration may besatisfied by the reservation application declaration. Conversely, as theextracted identifiers of the first declaration fail to match theextracted identifiers of the directions application declaration, thedata management may determine that the first declaration is notsatisfied by the directions application declaration.

In another example, the data management application may compare each ofthe extracted, output and display identifiers of the first declaration,as shown in Table A, to the extracted output and display identifiers ofthe reservation and directions applications declarations, as shown inTable B. As the extracted output and compose identifiers of the firstdeclaration match the extracted input and display identifiers of thereservation application declaration, the first declaration may besatisfied by the reservation application declaration.

The data management application may then compare the second declaration,as shown in Table A, to the reservation application declaration anddirections application declaration, as shown in Table B. In this regard,the data management application may determine that the directionsapplication declaration satisfies the second declaration. Additionally,the data management application may determine that the reservationapplication declaration does not satisfy the second declaration.

In some embodiments the data management application may intermittentlyquery each of the other applications, as well as the application, fordeclarations and the specific types of identifiers contained within thedeclarations to determine the types of supplemental data which theapplications are capable of accommodating and/or providing. In thisregard, the data management application may maintain a database of allof the declarations in association with the specific types ofsupplemental data and/or identifiers which the respective applicationsare capable of accommodating and/or providing. As such, the datamanagement application may determine whether a declaration generated bya first application may be satisfied by querying the database, withoutquerying each of the other applications.

Upon determining that at least one the declarations is satisfied, one ormore respective notifications indicating that matching supplemental datais available may be provided. The one or more notifications may bedisplayed on the device and may include selectable banners, pop-upnotifications, partial or full-screen overlays, or other suchnotifications alerting the user that matching supplemental data isavailable from another application.

For example, as shown in FIG. 6 banner notifications 610 and 620,indicating that the matching supplemental data, including reservationsfor Circle Pizza and directions to Circle Pizza, are available may beoverlaid on the bottom of the user interface 300 of the application. Thenotifications may display an overview (i.e., summary) of the matchingsupplemental data associated with each notification 610 and 620. In someembodiments, name data indicating the other application which isproviding the matching supplemental data associated with the respectivenotification may be displayed.

The notifications may be presented in a space saving arrangement bycompressing and placing them behind a first notification. The compressedsecond notification may only include a summary of the secondsupplemental data, and may provide the name of the second otherapplication which is providing the second supplemental data to savespace on the display. Such an arrangement may allow for notifications tobe presented without overtaking the display of the application. Forexample, as shown in FIG. 6, banner notification 620 may be compressedbehind banner notification 610 on the bottom of the display. As such,the banner notification 610 may be considered the first notification.

Upon receiving a selection of one of the notifications, the datamanagement application may integrate the user interface and supplementaldata of the other application associated with the selected notificationinto the user interface of the application. For example, when the userselects banner notification 610, the reservation application may receivea request to provide the user interface and supplemental data associatedwith the reservation application declaration, as shown in Table B. Insome embodiments the application may directly request the supplementaldata and user interface from the other application associated with theselected notification.

The data management may integrate the selected other application intothe user interface by arranging the supplemental data and user interfaceprovided by the other application into the application. For example, thedata management application may receive and forward the supplementaldata and user interface provided by the reservation applicationassociated with the selected notification to the restaurantrecommendation application. As shown in FIG. 7, the user interface 300of the restaurant recommendation application may integrate thereservation application 710 by composing the user interface provided bythe reservation application along with the corresponding supplementaldata 720-740 within its own user interface, in the form of a card. Thecorresponding supplemental data may include reservation times 720, thedate the reservation is being requested 730, and the number of guestsfor the reservation 740. Additional (or less) corresponding supplementaldata may also be displayed by the reservation application 710.

Additional declarations may be generated by other applications which areintegrated into the user interface of the application. In this regard,the other applications may generate declarations for additionalsupplemental data based on the associated data and supplemental datadisplayed in the user interface. For example, the reservationapplication 710 may monitor the associated data 520 and 530 andsupplemental data 720-740 being displayed by the computing device, andgenerate one or more declarations for additional supplemental data basedon the displayed data.

The data management application may monitor the application and theother applications to determine whether any of the declarations foradditional supplemental data may be satisfied, as previously described.In this regard, the data management application may periodically queryeach of the other applications to determine whether they can provideadditional supplemental data of the specific type of data specified inthe one or more requests for additional supplemental data.

Upon determining that at least one the declarations for additionalsupplemental data is satisfied, one or more respective notificationsindicating that matching supplemental data is available may be provided.For example, as shown in FIG. 8, a second notification 810, indicatingthat additional supplemental data relating to a scheduled calendarappointment occurring during a potential reservation time as indicatedby the supplemental data 720 and 730 of the reservation application 710,may be displayed on the user interface 300 of the restaurantrecommendation application.

Upon selecting the second notification, the data management module mayintegrate the other application associated with the second notificationinto the user interface by arranging the additional supplemental dataand corresponding display elements in the location provided by theapplication. For example, as shown in FIG. 9, a calendar application 910may be integrated as a second card within the restaurant recommendationapplication's user interface 300. As such, the user interface of theapplication 300, including the “Circle Pizza” portion 500 of theapplication, the reservation application 710, and the calendarapplication 910 may be integrated into a single display.

The other applications integrated into the user interface may updatetheir corresponding display elements and supplemental associated databased on the data being displayed in the user interface. For example, asshown in FIG. 10, upon the user navigating from a first location in therestaurant recommendation application corresponding to Circle Pizza, toa second location corresponding to an overview page, the data providedby the other applications may change. In this regard, as the associateddata no longer includes a restaurant selection, the reservationapplication may default to generic supplemental data 750, including adate of “tomorrow” and a default number of guests “4 People.”Additionally the calendar application 910 may respond to the change ofsupplemental data within the reservation application, and display thecalendar for “tomorrow.” In some embodiments the integration of theother applications may be removed when the identifier's of thedeclaration of which the other application satisfied are no longermatched.

In some embodiments declarations may be satisfied when the data anddisplay identifiers of declarations from the application are matchedwith the data and display identifiers of two or more other applications.In this regard, one or a group of other application may provide thesupplemental data to a second other application. The second otherapplication may then integrate its user interface into the applicationand display the supplemental data provided by the one or group of otherapplications.

The features described above may allow for user interfaces of multipleapplications to be shown together, to provide a coherent and rich userexperience. By displaying multiple user interfaces together in a singledisplay, users are able to utilize multiple applications at a singletime without having to navigate between different screens. In additionthe features described above may allow for the computing device toanticipate a user's needs, thereby providing information to the userbefore it is requested.

Flow diagram 1100 of FIG. 11 is an example flow diagram of some of theaspects described above that may be performed by one or more computingdevices such as client computing devices 120 or 130. It will beunderstood that the steps discussed herein are merely an example; thesteps may occur in a different order, steps may be added, and steps maybe omitted. In this example, at block 901, one or more computing devicesmay display a user interface including associated data corresponding toa first application. The one or more computing devices may generate arequest for supplemental data, as shown at block 1104, and identify asecond application which can satisfy the request for supplemental dataas shown at block 1106. The one or more computing devices may generateand display a notification indicating that the second application canprovide the requested supplemental data, as shown in block 1108. Aselection of the notification may be received by the one or morecomputing devices, as shown at block 1110, and a second user interfacecorresponding to the second application may be integrated into the userinterface, wherein the second user interface displays the requestedsupplemental data, as shown in block 1112.

Most of the foregoing alternative examples are not mutually exclusive,but may be implemented in various combinations to achieve uniqueadvantages. As these and other variations and combinations of thefeatures discussed above can be utilized without departing from thesubject matter defined by the claims, the foregoing description of theembodiments should be taken by way of illustration rather than by way oflimitation of the subject matter defined by the claims. As an example,the preceding operations do not have to be performed in the preciseorder described above. Rather, various steps can be handled in adifferent order, such as reversed, or simultaneously. Steps can also beomitted unless otherwise stated. In addition, the provision of theexamples described herein, as well as clauses phrased as “such as,”“including” and the like, should not be interpreted as limiting thesubject matter of the claims to the specific examples; rather, theexamples are intended to illustrate only one of many possibleembodiments. Further, the same reference numbers in different drawingscan identify the same or similar elements.

1. A computer implemented method for integrating applications into asingle user interface, the method comprising: displaying, with one ormore computing devices, a user interface including associated data,corresponding to a first application; generating, with the one or morecomputing devices, a request for supplemental data; identifying, withthe one or more computing devices, a second application which cansatisfy the request for supplemental data; generating and displaying, bythe one or more computing devices, a notification indicating that thesecond application can provide the requested supplemental data;receiving, by the one or more computing devices, a selection of thenotification; integrating, by the one or more computing devices, asecond user interface corresponding to the second application into theuser interface, wherein the second user interface displays the requestedsupplemental data.
 2. The method of claim 1, further comprising:generating, with the one or more computing devices, a second request forsupplemental data; identifying, with the one or more computing devices,a third application which can satisfy the second request forsupplemental data; generating and displaying, by the one or morecomputing devices, a second notification indicating that the thirdapplication can provide the second requested supplemental data; and uponreceiving a selection of the second notification, integrating, by theone or more computing devices, a third user interface corresponding tothe third application into the user interface, wherein the third userinterface displays the second requested supplemental data.
 3. The methodof claim 1, wherein the request for supplemental data is based upon theassociated data displayed on the one or more computing devices.
 4. Themethod of claim 2, wherein the second request for supplemental data isbased upon the requested supplemental data displayed in the second userinterface.
 5. The method of claim 1, wherein the request forsupplemental data includes a request for a specific type of data notavailable through the first application.
 6. The method of claim 1,further comprising: updating the second user interface when theassociated data displayed on the user interface changes.
 7. The methodof claim 1, further comprising: removing the second user interface whenthe associated data displayed on the user interface changes.
 8. A systemfor integrating applications into a single user interface, the methodcomprising: one or more computing devices having one or more processors;and memory storing instructions, the instructions executable by the oneor more processors; wherein the instructions comprise: displaying a userinterface including associated data, corresponding to a firstapplication; generating a request for supplemental data; identifying asecond application which can satisfy the request for supplemental data;generating and displaying a notification indicating that the secondapplication can provide the requested supplemental data; receiving aselection of the notification; integrating a second user interfacecorresponding to the second application into the user interface, whereinthe second user interface displays the requested supplemental data. 9.The system of claim 8, wherein the instructions further include:generating a second request for supplemental data; identifying a thirdapplication which can satisfy the second request for supplemental data;generating and displaying a second notification indicating that thethird application can provide the second requested supplemental data;and upon receiving a selection of the second notification, integrating,by the one or more computing devices, a third user interfacecorresponding to the third application into the user interface, whereinthe third user interface displays the second requested supplementaldata.
 10. The system of claim 8, wherein the request for supplementaldata is based upon the associated data displayed on the one or morecomputing devices.
 11. The system of claim 9, wherein the second requestfor supplemental data is based upon the requested supplemental datadisplayed in the second user interface.
 12. The system of claim 8,wherein the request for supplemental data includes a request for aspecific type of data not available through the first application. 13.The system of claim 8, wherein the instructions further include:updating the second user interface when the associated data displayed onthe user interface changes.
 14. The system of claim 8, wherein theinstructions further include: removing the second user interface whenthe associated data displayed on the user interface changes.
 15. Anon-transitory computer-readable medium storing instructions, which whenexecuted by one or more processors, cause the one or more processors to:display a user interface including associated data, corresponding to afirst application; generate a request for supplemental data; identify asecond application which can satisfy the request for supplemental data;generate and display a notification indicating that the secondapplication can provide the requested supplemental data; receive aselection of the notification; integrate a second user interfacecorresponding to the second application into the user interface, whereinthe second user interface displays the requested supplemental data. 16.The non-transitory computer-readable medium of claim 15, wherein theinstructions further cause the one or more processors to: generate asecond request for supplemental data; identify a third application whichcan satisfy the second request for supplemental data; generate anddisplay a second notification indicating that the third application canprovide the second requested supplemental data; and upon receiving aselection of the second notification, integrating a third user interfacecorresponding to the third application into the user interface, whereinthe third user interface displays the second requested supplementaldata.
 17. The non-transitory computer-readable medium of claim 15,wherein the request for supplemental data is based upon the displayedassociated data.
 18. The non-transitory computer-readable medium ofclaim 15, wherein the request for supplemental data includes a requestfor a specific type of data not available through the first application.19. The non-transitory computer-readable medium of claim 15, wherein theinstructions further cause the one or more processors to: update thesecond user interface when the associated data displayed on the userinterface changes.
 20. The non-transitory computer-readable medium ofclaim 15, wherein the instructions further cause the one or moreprocessors to: remove the second user interface when the associated datadisplayed on the user interface changes.